|
15.06.2026
15:00 Uhr
|
Contracts in C++26 definieren Regeln für Funktionen, um Fehler über API-Grenzen hinweg zur Laufzeit zu erkennen. Entwickler haben so mehr Steuermöglichkeiten.

Die gute Nachricht gleich vorweg: Contracts sind Bestandteil von C++26. Das Standardisierungskomitee hat beim finalen Treffen keine nennenswerten Änderungen mehr vorgenommen. Vorschläge für eine andere Syntax oder ein verringertes Featureset sind vorerst vom Tisch. C++ ist jetzt eine von vielen Sprachen, die Contracts als Sprachmittel anbieten. Eiffel und Ada besitzen das Feature schon lange. Aus Eiffel stammt auch der Begriff Design by Contracts (DbC), der rechtlich geschützt ist.
Die Idee hinter Contracts ist, Nutzenden einer Funktion die möglichen Anforderungen an die Funktionsparameter direkt und in Code mitzuteilen. Damit weiß ein Aufrufer, welche Werte für einen Parameter erlaubt sind. In C++ steht dafür pre zur Verfügung. Auch das Ergebnis einer Funktion lässt sich mit einem Contract auszeichnen. Er gibt eine Garantie für das Resultat und ist durch post angegeben.
Beides ist nicht neu, jede Funktion hat Anforderungen an ihre Daten. Bisher ließen diese sich in C++ jedoch nur durch Dokumentation mitteilen. Der Nachteil dieses Ansatzes ist, dass Dokumentation und Code auseinanderfallen können und dass Entwickler die Dokumentation finden und lesen müssen. In C++26 werden Contracts direkt in C++-Code dokumentiert, also der Sprache, in der auch entwickelt wird, und ein Programm prüft diese Anforderungen zur Laufzeit.